package com.zzr.demo.redis.controller;

import com.zzr.demo.redis.model.Person;
import com.zzr.demo.redis.service.CacheService;
import com.zzr.demo.redis.to.PersonUpdater;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author: xiaomi
 * @date: 2021/10/7
 * @description: 对数据进行缓存是Redis最常见的用法之一，因为缓存操作是指把数据存储在内存而不是硬盘上，而访问内存远比访问硬盘的速度要快得多，所以用户可以通过把需要快速访问的数据存储在Redis中来提升应用程序的速度。
 */
@RestController
@RequestMapping("cache")
@Api(tags = "缓存")
public class PersonCacheController {

    @Autowired
    CacheService<Person> cacheService;

    @GetMapping("/getPerson/{key}")
    @ApiOperation("获取缓存数据")
    public Person get(@PathVariable("key") String key) {
        Person person = cacheService.get(key);
        return person;
    }

    @PostMapping("/set")
    @ApiOperation("设置缓存数据")
    public boolean set(@RequestBody Person person) {
        cacheService.set(person);
        return true;
    }

    @PostMapping("/update")
    @ApiOperation("更新缓存数据")
    public boolean update(@RequestBody PersonUpdater updater) {
        boolean update = cacheService.update(updater.getKey(), updater);
        return update;
    }
}
